package pe.com.bbva.efcap.servidor.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import pe.com.bbva.efcap.servidor.bean.IndicadorBean;
import pe.com.bbva.efcap.servidor.bean.PeriodoCuentaBean;
import pe.com.bbva.efcap.servidor.servicio.DetalleSimulacionService;
import pe.com.bbva.efcap.servidor.servicio.IndicadorService;
import pe.com.bbva.efcap.servidor.util.Constante;

@Component("flujoCajaMB") 
@Scope("request")
public class FlujoCajaController implements Serializable {
	
	private static final long serialVersionUID = 1L;
	private static final Logger LOGGER = LoggerFactory.getLogger(ProyeccionController.class);

	@Autowired
	private DetalleSimulacionService detalleSimulacionService;
	
	@Autowired
	private IndicadorService indicadorService;	
	
	private Integer simulationCode;
	private List<IndicadorBean> indicadorListFlujoCaja;
	private List<PeriodoCuentaBean> detalleListFlujoCaja;
	private int tamanio;
	
	@PostConstruct
	public void init() {
		try{
			indicadorListFlujoCaja = new ArrayList<IndicadorBean>();
			listarIndicadorFlujoCaja();
			detalleListFlujoCaja = new ArrayList<PeriodoCuentaBean>();
			listarDetalleFlujoCaja();
		} catch (Exception e) {
			LOGGER.error("ProyeccionController -> init" + e.getMessage(), e);
		}
	}
		
	public Integer getSimulationCode() {
		simulationCode = 1;
		return simulationCode;
	}

	public void setSimulationCode(Integer simulationCode) {
		this.simulationCode = simulationCode;
	}

	public DetalleSimulacionService getDetSimulac() {
		return detalleSimulacionService;
	}

	public void setDetSimulac(DetalleSimulacionService detSimulac) {
		this.detalleSimulacionService = detSimulac;
	}

	public IndicadorService getIndicador() {
		return indicadorService;
	}

	public void setIndicador(IndicadorService indicador) {
		this.indicadorService = indicador;
	}

	public List<IndicadorBean> getIndicadorListFlujoCaja() {
		return indicadorListFlujoCaja;
	}
	
	public void setIndicadorListFlujoCaja(List<IndicadorBean> indicadorListFlujoCaja) {
		this.indicadorListFlujoCaja = indicadorListFlujoCaja;
	}

	public List<PeriodoCuentaBean> getDetalleListFlujoCaja() {
		return detalleListFlujoCaja;
	}

	public void setDetalleListFlujoCaja(List<PeriodoCuentaBean> detalleListFlujoCaja) {
		this.detalleListFlujoCaja = detalleListFlujoCaja;
	}

	public int getTamanio() {
		return tamanio;
	}

	public void setTamanio(int tamanio) {
		this.tamanio = tamanio;
	}
	
	public void listarIndicadorFlujoCaja(){
		indicadorListFlujoCaja = indicadorService.obtenerListaIndicadoresPorCatalogo(Constante.FLUJO_CAJA);
		this.tamanio=indicadorListFlujoCaja.size();
	}
	
	public void listarDetalleFlujoCaja(){
		detalleListFlujoCaja = detalleSimulacionService.getSimulacionProyeccion(getSimulationCode(), Constante.FLUJO_CAJA);
	}

}
